Aus Oxoscript wird NanoPy - mehr Infos

Was ist neu?

24. Februar 2024

Neue Karten-Firmware 1.5.2

Fehlerkorrekturen

Verbesserungen - Science/Science+: verbesserte Frequenzerkennung - Science: Update des VOC und eCO2-Treibers - Dezimalzahlen werden neu immer mit zwei Stellen (anstelle von 5) ausgegeben.

Neue Funktionen

drawRectangleRounded(x,y,w,h,r)

Diese Funktion hiess im letzten Release drawRoundedRectangle, was jedoch zu einigen Konflikten bei bestehenden Scripts führte.

drawSpriteScaled(x,y,w,h,s,data)

Wie drawSprite, jedoch kann noch ein Skalierungsfaktor s angegeben werden. Wenn 1 angegeben wird, wird nichts skaliert. 2 bedeutet Verdoppelung etc.

textAlignment(alignment)

Damit lassen sich jetzt Strings, die mit drawText ausgegeben werden, links-, rechtsbündig oder zentriert ausgeben. (Werte: TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT)

16. Februar 2024

Neue Karten-Firmware 1.5.0

Neu im Editor

Fehlerkorrekturen

Neue Funktionen

Neues Design für das Menüsystem.

Neue Funktion: isEqual(string1, string2)->bool

Diese Funktion vergleicht zwei Strings und gibt true oder false zurück.

Neue Funktion: strCompare(string1,string2)->int

Diese Funktion vergleicht zwei Strings und liefert einen numerischen Wert, abhängig von der lexikografischen Ordnung. Bei “0” sind beide Strings identisch. Ein negativer Wert bedeutet, dass der erste String vor dem zweiten String einzuordnen ist.

Support für die Oxocard Science+

Die neue Science+ zusätzliche Sensoren. Zudem wurde der CO2 und VoC-Sensor von Renesas durch leistungsfähigere von Sensirion ersetzt. Folgende Funktionen sind neu:

getVOC()->float getVOCIndex()->float getNOx()->float getNOxIndex()->float getTOF8x8()->int[64] getTOF4x4()->int[16]

22. Dezember 2023

Neue Karten-Firmware 1.4.8

Neu im Editor

Scripts können jetzt hoch- und runtergeladen werden.

Fehlerkorrekturen

30. November 2023

Neue Karten-Firmware 1.4.6 / 1.4.7

Neu

Neue UART-, SPI- und Language-Funktionen.

Verbesserungen

Verbesserte Fehlermeldung wenn nicht mit dem WiFi verbunden.

Fehlerkorrekturen

Die Standard-Pixel-Offsets bei rotierten Bildschirmen wurden korrigiert (von 240 auf 239). Die clipRectangle()-Funktion wurde ebenfalls korrigiert. Es wurden diverse NanoPy-Fehler korrigiert: - Verkettung von binären Operationen - In-Place-Deklaration der statischen Arrays - Die implizite Deklaration einer Zeichenfolge ist jetzt 120 Zeichen lang, nicht (120 - 6) - Das Deklarieren einer Variablen durch Zurückgeben eines Arrays von einer Objektfunktion funktioniert jetzt korrekt

Neue Befehle:

System-Funktionen

IO-Funktionen

3. November 2023

Neue Karten-Firmware 1.4.5

Neu

HTTP request header können neu mit addRequestHeader(key, value) hinzugefügt und mit clearRequestHeaders() gelöscht werden.

Die Dateifunktionen wurden um writeLine(line) und readLine() erweitert. Mit diesen Funktionen kann nun wesentlich einfacher in/aus eine Datei geschrieben/gelesen werden.

Verbesserungen

Serverantworten einer postRequest()-Anfrage können jetzt ebenfalls mit den readRequest-Funktionen ausgelesen werden.

HTTPS Serverzertifikate werden nun jeweils zuerst mit dem internen CA store geprüft und nur im Fehlerfall direkt vom Zielserver angefragt.

Fehlerkorrekturen

Laufende PWMs werden beim Initialisieren eines GPIOs jetzt korrekt gestoppt.

Neue Befehle:

Datei-Funktionen

Netzwerk-Funktionen

13. Oktober 2023

NanoPy-Editor Updates

Neu kann man Bilder direkt in das nötige Byte-Format konvertieren lassen. Die Funktion befindet sich im Konstanten-Editor. Sie unterstützt maximal 24x24-Pixel-Bilder.

Neue Karten-Firmware 1.4.4

Neu

MQTT/MQTTS - Tauscht nun ganz einfach Daten übers Internet aus mit den neuen MQTT-Funktionen.

Die Oxocard unterstützt jetzt auch HTTPS-Requests. Serverzertifikate werden automatisch via unserem Server angefragt und im “certs”-Ordner der Oxocard abgelegt. Alternativ kann auch selbst ein Zertifikat im Dateisystem hinzugefügt werden und mit der selectCertificate()-Funktion darauf verwiesen werden.

Verbesserungen

getRequest() kann nun auch “chunked data” von einem Server zurückgeben.

writePWM() wurde verbessert, damit veränderte dutyCycle-Werte stufenloser ausgegeben werden.

Oxocard Science: Die einstellbaren Min-/Max-Offsetwerte der Sensoren wurden erhöht.

Fehlerkorrekturen

In der drawEllipse()-Funktion bei einer Rotation von 90° oder 270° wird nebst x & y jetzt auch rx & ry getauscht.

Neue Befehle:

Netzwerk-Funktionen

5. Sept. 2023 - Jetzt auch ohne Cloud

Jetzt auch ohne Cloud/offline nutzbar.

Ab sofort ist der leistungsfähige NanoPy-Editor auch offline verfügbar. Das Projekt ist Open Source und kann inklusive Installationsanleitung von

Offline-Editor

heruntergeladen werden. Die Dokumentation kann über den Browser von dieser Seite gecached werden:

Referenz

17. Aug. 2023

NanoPy-Editor Updates

Um die Lesbarkeit der Dokumentation zu verbessern, wurden alle Parameter und Rückgabewerte der Funktionen aus den Titeln entfern. Dafür wurde jede Funktion mit einem Syntax-Eintrag erweitert.

Die Dokumentation wurde um eine Bibliothek-Kategorie erweitert. In dieser sind z.B. die interne IO- und die Cartridge-Bibliotheken beschrieben.

Es wurden neue Beispiel-Skripts für die Oxocard-Connect und den Cartridges hinzugefügt. Besonders erwähnenswert ist der Elektronik Kurs, welcher mit dem “Oxocard Connect Innovator Kit” durchgeführt werden kann.

Neue Karten-Firmware 1.4.2

Neu

Neu gibt es die onTimer()-Ereignisprozedur, welche mit setTimer(ms:long) einmalig oder mit setInterval(ms:long) wiederholt nach einer bestimmten Zeit aufgerufen werden kann.

Die Cartridge-Erkennung bei der Oxocard-Connect wurde verbessert. Sie läuft jetzt auch, wenn bereits ein Script ausgeführt wird.

Die interne “io.npy”-Bibliothek wurde hinzugefügt. Sie erlaubt es, mit nur zwei Funktionen IOs anzusteuern oder einzulesen.

Verbesserungen

Bei einem Neustart der Karte via NanoPy-Editor können nun auch Skripts mit “while 1:” verlassen werden.

“No WiFi connected”- oder “No Editor paired”-Warnung werden jetzt nicht mehr angezeigt, wenn eine Cartridge eingesteckt wird.

setPrecision(0) wird nun auch unterstützt und verhält sich gleich wie wenn man bei jedem Wert round() verwenden würde.

Fehlerkorrekturen

Die “LED FADE” Demo der Oxocard-Connect wurde umbenannt zu “LED RUNNING”.

Bei der seriellen Verbindung mach die Oxocard-Connect nun automatisch ein Reset und muss nicht mehr manuell via Menü ausgeschaltet und neu gestartet werden.

Neue Befehle:

Math-Funktionen

Zeit-Funktionen

Oxocard goes Open Source

Wir lösen unser Versprechen ein uns werden schrittweise Designs und Code öffentlich machen.

Auf github finden sich neu die Schaltpläne und Designs sämtlicher Oxocards und Cartridges. In den BOM-Dateien (Bill of material) sind alle verwendeten Komponenten aufgeführt. Damit können Maker die Oxocard-Hardware auch auf andere Software-Plattformen migrieren.

Die Firmware der Oxocards ist aktuell noch nicht Open Source, kann aber jetzt neu jederzeit auf Oxocards geflasht werden. Dies ist notwendig, wenn die Karten z.B. mit der ESP-IDF oder mit Arduino überschrieben wurden. Sämtliche Cartridge-Firmware ist Open Source.

28. Juli 2023

Neue Karten-Firmware 1.4.1

Neu

Benutzerskripts, die auf die Oxocard gespeichert wurden, können neu auch importiert werden:

# print_hello.npy das via "Meine Skripts" auf die Karte geladen wurde
def printHelloWorld():
    print "Hello World!"

# main.npy
import print_hello
printHelloWorld() # Ausgabe: "Hello World!"

Unter Einstellungen gibt es neu die Rotation-Option, mit der die Bildschirmausrichtung bestimmt werden kann.

Alle “Oxoscript”-Texte wurden zu “NanoPy” geändert und alle “.tc”-Dateiendungen zu “.npy”.

Verbesserungen

Das Text-Eingabefeld von textInput() wird nun verlassen, wenn ein neues Skript auf die Karte geladen wurde.

Benutzer-IOs werden neu zurückgesetzt, wenn ein Skript verlassen oder ein neues Skript geladen wurde.

Die Timeout-Zeit bei einem Snapshot wurde auf 30 Sekunden erhöht.

Die Anzeige bei einem Kompilierfehler kann neu mit beliebigem Knopfdruck verlassen werden.

Fehlerkorrekturen

i2cReadByte() gibt jetzt auch 0 zurück, wenn das Lesen fehlschlug.

onClick() wird nun wie ursprünglich beabsichtigt nur einmal pro Klick ausgeführt und nicht mehrmals.
NanoPy-Beispiele, die onClick() falsch verwendeten, wurden korrigiert.

Neue Befehle:

IO-Funktionen

System-Funktionen

Mai 2023: Aus Oxoscript wird NanoPy

Von der beliebten Programmiersprache Python gibt es verschiedene Varianten, zu denen nun die Sprache NanoPy hinzukommt. NanoPy ist eine vereinfachte Version von Python. Im Gegensatz zum Original ist sie statisch typisiert und kann daher mit deutlich geringeren Hardwareanforderungen betrieben werden. Sie ist speziell für Kleincomputer optimiert. Die Sprache basiert auf dem Python-Dialekt, enthält aber verschiedene Vereinfachungen, die den Einstieg und die Programmierung erleichtern. Bisher wurde die Sprache Oxoscript genannt. Aufgrund der sehr engen Verwandtschaft zu Python haben wir uns zu dieser Namensänderung entschlossen.

30. März 2023

Änderungen am Editor:

Neue Karten-Firmware 1.3.1

Verbesserungen

AP_SSID und AP_PASSWORD wurden verändert, damit es keine Konflikte mehr gibt, wenn sich mehrere Karten gleichzeitig im Accesspoint-Mode befinden.

Wenn setAutostart(true) aufgerufen wurde, wird nun bei einem Neustart der Oxocard für 3 Sekunden ein Fenster gezeigt, bei dem man die Autostartfunktion wieder ausschalten kann.

Die Oxocard-Science hat das “Flying Cow”-Game und zwei neue Demos erhalten. Mit der “SENSING RADAR”-Demo kann man tolle Sensor-Experimente durchführen, da man sieht wie sich die Werte über Zeit verändert haben.

Das WiFi Auswahlfenster wurde verschönert und um eine “Erneut Scannen”-Funktion erweitert.

Neue Befehle:

System-Funktionen

3. Februar 2023

Neue Firmware 1.2.9

Fehlerkorrekturen

strFind() und strSubstring() funktionieren jetzt auch mit Variablen (vorher nur mit Konstanten).

Neue Befehle:

System-Funktionen

Sensor-Funktionen

22. Dezember 2022

Neue Firmware 1.2.7

Python oder nicht: du entscheidest

Dich nerven die Doppelpunkte hinter if/else/for/while/def und class? Diese haben wir der Python-Sprache abgeschaut. Wenn du diese magst, kannst du diese weiterhin schreiben. Falls nicht, kannst du sie jetzt auch einfach weglassen :-).

for i in 10:
    if i < 5: 
        print ("tiefe Zahl")
    else:
        print ("grosse Zahl")


oder

for i in 10
    if i < 5 
        print ("tiefe Zahl")
    else
        print ("grosse Zahl")


Vielen Einsteiger:innen bekunden Mühe mit den vielen Sondernzeichen, die wir von Python übernommen haben. Jetzt kannst du es wie in Python schreiben, oder du lässt die runden Klammern bei Funktionsaufrufen in folgenden Fällen einfach weg:

Python-kompatibel:

clear()
drawText(10,10, "Hello World")
update()


Alternative mit weniger Klammern:

clear
drawText 10,10, "Hello World"
update


Weil es so schön ist, hier nochmals ein Beispiel (keine Doppelpunkte, keine Klammern bei Funktionsaufrufe ohne Rückgabewert)

turnOn = false

def onDraw
    if turnOn
        background 255,255,255
    else:
        background 0,0,0
    update

def onClick
    b = getButtons()
    if b.left
        turnOn = false
    elif b.right
        turnOn = true


Rückgabewerte können jetzt auch offene Arrays zurückgeben

Bisher war es nur möglich, Array mit fixer Grösse zurückzugeben:

def test()->byte[20]:
    return "Hello"

Neu kann die Grösse offen sein:

def test(t)->byte[]
    a:byte[20]
    a="byte[20]"

    b:byte[10]
    b="byte[10]"

    if t%2 == 0
        return a
    else
        return b

for i in 10
    print test(i)


sizeof

Die sizeof-Funktion kann jetzt auch auf verschachtelte Listen angewendet werden.

Experimentell: neue Serialisierungsfunktion für Objekte

Mit « lassen sich neu Objekte in Bytearrays umwandeln und umgekehrt. So kann man Objekt direkt beispielsweise in Dateien speichern. Wir werden diesen Befehl bald vor allem für erweiterte Kommunikationsbeispiele verwenden, z.B. zur Kommunikation zwischen Koprozessoren, Sensoren (I2C), aber auch für Funkprotokolle.

Das Beispiel speichert den Inhalt des Objekts v in einem Bytearray buf:

v = vector(x=10,y=20)
buf << v

Damit kann man die Daten wieder zurückschreiben:

buf = [0,0,32,65,0,0,160,65]
v:vector
v << buf
print v.toString()

Einführung in NanoPy

Lade hier jetzt die kostenlose Kurzdokumentation zur Einführung in NanoPy runter:

Kurzanleitung zu NanoPy.

Jetzt auf Youtube

Wir haben jetzt einen Youtube-Kanal, wo wir regelmässig neue Videos hochladen. Ein Besuch lohnt sich:

Oxocard Mini auf Youtube.

16. Januar 2023

Neue Firmware 1.2.8

Fehlerkorrekturen

“print (1+2)+3” führt jetzt zu einem Fehler. Bei Beispielen mit Klammerausdrücken, darf print nicht ohne Klammern verwendet werden. Korrekt: print ((1+2)+3)

“print 10.0%4” führte zuvor zu einer Fehlermeldung.

“print 1+1” gibt jetzt 2 aus und nicht 11.

Die Funktionen stringToInt und stringToFloat können jetzt auch mit negativen Nummern umgehen.

10. Dezember 2022

News im Dezember

Wir haben ein neues Game entwickelt. Dieses ist unter Beispiele > Spiele > Flying Cow zu finden :-)

Fehlerbehebungen

Optimierung der Sprite-Ausgabe.

Neue Befehle:

String-Funktionen

4. November 2022

Änderungen am Editor:

Änderungen an der Karten-Firmware:

Fehlerbehebungen

Bei korrekter Übergabe eines Arrays als Parameter einer Funktion wird nun keine Fehlermeldung mehr angezeigt.

Neue Befehle:

2D-Funktionen

Netzwerk-Funktionen

String-Funktionen

5. Oktober 2022

Neue Firmware 1.2.4

Konstante Ausdrücke

Neu lassen sich auch in Konstanten einfache Berechnungen ausführen, sofern diese nur Zahlen bzw. andere Konstanten enthalten.

const ANGLE_30 = PI / 6
const SIZE = 100


Diese Berechnungen kann man nun auch bei der Deklaration von Arrays verwenden. Bisher war es nur möglich, einen fixen Wert oder eine Konstanten anzugeben.


const SIZE = 100

data:byte[SIZE * SIZE]
data2:byte[SIZE / 2]



Fehlerbehebungen

Bei verschachtelten Klassen mit integrierten Array-Datentypen wurden die Arrays nicht in jedem Fall korrekt initialisiert, wodurch die Arrays immer die Länge 0 hatten. Diese ist nun behoben.

Hier ein Beispiel einer KLasse SelectionList, welche eine eine Liste von Label-Objekten enthält, die je eine text-Variable mit einer Länge von 40 Bytes enthalten:

class Label:
    i:float
    x:byte
    text:byte[40]

class SelectionList:
    labels:Label[5]
    def addText(text:byte[]):
        labels[0].text = text

sl:SelectionList
sl.labels[0].x=1
sl.labels[0].i=1.5
sl.addText("ABC")

print(sl.labels[0].text)
print(sl.labels[0].i)
print(sl.labels[0].x)

22. September 2022

Oxocard-Discord:

https://discord.gg/7zMew7KgaZ

Tritt unserem neuen Discord-Server bei, um direkt mit den Entwickler zu chatten und Teil der Oxocard-Community zu sein.

Änderungen an der Karten-Firmware:

Neue Befehle:

2D-Funktionen

Datei-Funktionen

System-Funktionen

IO-Funktionen

26. August 2022

Neue Funktionen:

Programmierung via USB-Kabel

Neu lassen sich die Karten auch via USB-Kabel programmieren. Hierzu muss die Oxocard mindestens über Firmware Version 1.2.2 verfügen. Es funktioniert nur mit Chrome-Browser und je nach Betriebssystem müssen noch USB-Treiber installiert werden. Wenn man sich ausloggt, erscheint die neue Anmeldeseite, auf der weitere Informationen stehen.

Snapshot-Funktion

Neu kann man Bilder vom Screen schiessen und sich im Browser anzeigen lassen. Hierzu gibt es in der Toolbar neben den Debugging-Werkzeugen das neue Kamera-Symbol. Dieses ist aktiv, wenn sich das Programm im Debugg-Mode befindet.

Export von Dateien

Wer Sensorik-Daten auf den PC/Mac übertragen möchte, kann dies nun über das Terminal-Fenster machen. Hierzu einfach die Daten mit dem print-Befehl in das Terminal-Fenster schicken (Achtung: das Terminal-Fenster muss offen sein, sonst wird nichts übertragen). Im Fenster gibt es neu am unteren Rand ein Download-Button, der die Daten in eine TXT-Datei exportiert.

Für die Weiterbearbeitung mit Excel empfiehlt es sich, das Terminal zuerst zu löschen. Wenn mehrere Daten geschickt werden sollen, einfach die Daten mit “;” abtrennen. z.B. print(wert1 + “;” + wert2 + “;” … )

Online-Beispiel

Es gibt wieder viele neue Bespiele zu entdecken. Diese befinden sich unter “Beispiele”: - 2D: viele kleine Apps zeigen dir, wie du zweidimensionale Animationen bauen kannst. - 3D: mit der eingebauten 3D-Engine lassen sich auch einfache geometrische Objekte im dreidimensionalen Raum darstellen. - Spiele: hier finden sich weitere kleine Spiele, die als Basis für eigene Experimente dienen können. - Science-Parcours: diese Beispiele werden im separat erhältlichen Science Parcours benötigt. Mehr Information dazu via info@oxocard.ch

Oxocard Science

Die Demos wurden um eine sehr leistungsfähige Multimeter-App ergänzt. Damit lassen sich alle eingebauten Sensorwerte in einer übersichtlichen Skala beobachten.

Änderungen an der Karten-Firmware:

7. Juli 2022

Änderungen an der Karten-Firmware:

21. Juni 2022

Änderungen an der Karten-Firmware:

3. Juni 2022

Korrigierte Fehler in NanoPy:

Neue Beispiele

Unter dem Ordner “Beispiele/3D” findet sich nun ein erstes Set von 3D-Animationen. Die Funktionen dazu werden in den nächsten Tage dokumentiert.

Neue Funktionalität

Neue Klassen

vector3D

Diese Klasse stellt folgende Funktionen zur Verfügung:

Neue Funktionen

Umbenannte Klassen

logValues wurde zu logValue umbenannt

6. Mai 2022

Korrigierte Fehler in NanoPy:

Neue Funktionalität

Neue Klassen

Neue Funktionen

Klasse vector:

Klasse dateTime:

Neue Konstanten

7. April 2022

Änderungen am Editor:

Änderungen an der Karten-Firmware:

Neue Befehle:

File-Funktionen

Das Dateisystem der Oxocard kann nun mit einfachen Funktionen manipuliert werden. Damit können beispielsweise Texte oder Sensordaten gesammelt und persistiert werden. Bzw. auch nach einem Stromunterbruch wieder gelesen und weiterverarbeitet werden.

open(C_WRITE, "my_file.txt")
text = "Hello World!"
for c in text:
  write(c)
close()

...

open(C_READ, "my_file.txt")
text:byte[13] # to hold "Hello World!"
for i in 13:
  text[i] = read()
close()

setAutostart(enable)

Wenn die Autostartfunktion eingeschaltet wurde, wird bei einem Neustart der Oxocard (nach dem Verbinden mit dem Internet) direkt ins Startprogram gewechselt.

setAutostart(true)

turnOff()

Schaltet die Oxocard aus.

sleep(sec)

Schaltet die Oxocard aus und lässt sie nach x Sekunden wieder neustarten.

Sound-Funktionen

Es wurden viele neue Audio-Funktionen hinzugefügt, die es nun ermöglichen ganze Songs mit Code zu komponieren und abzuspielen.

setBPM(180)
beginSong()
noteAdvanced(C_NOTE_G, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_4, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_B, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_C, C_DURATION_1_4, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_C, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_C, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_D, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_B, C_DURATION_1_4, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_B, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_G, C_DURATION_1_8, C_OCTAVE_C4, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_A, C_OCTAVE_C4, 1.5, C_ARTICULATION_STANDARD);
noteAdvanced(C_NOTE_REST, C_DURATION_1_8, C_OCTAVE_C5, C_ARTICULATION_STANDARD);
#...
endSong()
playSong(true)

3. März 2022

Änderungen am Editor:

Änderungen an der Karten-Firmware:

x=5
y=10
for i in [x..y]:
  print(i)

Auch absteigende Reihen sind möglich:

for i in [-10..-20]:
  print(i)

Neue Befehle:

setPrecision(precision)

Formatiert beim Ausgeben von Float-Werten die Nachkommastellen:

f = 1.23931
setPrecision(2)
print(f)  # "1.24"

clipRectangle(x,y,w,h)

Limitiert die Ausgabe bei den Zeichnungsbefehlen. Es wird nur im definierten Rechteck gezeichnet.

clipRectangle(0,0,240,120)
clear()
drawCircle(120,120,80)
update()

noClipping()

Setzt die clipping-Einstellung wieder auf den ganzen Schirm zurück.

drawImageMonoCentered(x,y,w,h,img)

Dieser Befehl ist identisch zu drawImageMono(..), jedoch wird das Bild mittig zur x/y-Koordinate gezeichnet (anstatt oben links). So ist es in Kombination mit den Befehlen rotate() und scale() nun möglich, ein Bild zentriert zu rotieren oder zu vergrössern/verkleinern.